// eslint-disable-next-line @typescript-eslint/no-var-requires
const path = require('path')
function resolve(dir) {
  return path.join(__dirname, dir)
}

const objectProject = {
  index: {
    entry: 'src/main.ts', // page 的入口
    template: 'public/index.html', // 模板来源
    filename: 'index.html', // 在 dist/index.html 的输出
    // 当使用 title 选项时，template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
    title: 'csboot',
    // 在这个页面中包含的块，默认情况下会包含,提取出来的通用 chunk 和 vendor chunk。
    chunks: ['chunk-vendors', 'chunk-common', 'index']
  }
  // test: {
  //   entry: 'src/test/main.js', // page 的入口
  //   template: 'public/test.html', // 模板来源
  //   filename: 'test.html', // 在 dist/index.html 的输出
  //   // 当使用 title 选项时，template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
  //   title: 'csboot',
  //   // 在这个页面中包含的块，默认情况下会包含,提取出来的通用 chunk 和 vendor chunk。
  //   chunks: ['chunk-vendors', 'chunk-common', 'test']
  // }
}

// If your port is set to 80,
// use administrator privileges to execute the command line.
// For example, on Mac: sudo npm run / sudo yarn
const devServerPort = 9950
module.exports = {
  publicPath: './',
  outputDir: '../csboot-admin/src/main/resources/templates',
  assetsDir: 'static',
  pages: objectProject,
  lintOnSave: process.env.NODE_ENV === 'development',
  productionSourceMap: false,
  devServer: {
    port: devServerPort,
    open: true,
    overlay: {
      warnings: false,
      errors: true
    },
    progress: false
  },
  chainWebpack(config) {
    const svgRule = config.module.rule('svg')
    svgRule.uses.clear()
    svgRule
      .test(/\.svg$/)
      .include.add(resolve('./src/assets/icons'))
      .end()
      .use('svg-sprite-loader')
      .loader('svg-sprite-loader')
      .tap(options => {
        options = {
          symbolId: 'icon-[name]'
        }
        return options
      })
  }
}
